package com.kl.lock;

import java.util.concurrent.TimeUnit;

public interface Lock {
    /**
     * 非阻塞的，立即返回
     *
     * @param uid 用户ID
     */
    boolean tryLock(String uid);

    /**
     * 有超时时间
     *
     * @param uid      用户ID
     * @param timeOut  超时时间
     * @param timeUnit 时间单位
     */
    boolean tryLock(String uid, long timeOut, TimeUnit timeUnit);

    /**
     * 阻塞
     *
     * @param uid 用户ID
     */
    void lock(String uid);

    /**
     * 释放锁
     * @param uid 用户ID
     */
    void unLock(String uid);
}